﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Transactions;
using System.Text;
using DAL;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.ComponentModel;
using System.Globalization;

namespace BOL
{
    [Serializable]
    public class ListValueBL
    {
        


       [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetEmpresas()
        {

            List<ListValueInfo> lista = new List<ListValueInfo>();
            ListValueInfo infoall = new ListValueInfo();
            infoall.idInternal = 0;
            infoall.descripcion = "-----TODOS-------";
            lista.Add(infoall);

            var q = (from a in DbUtil.Db.Empresas
                     
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     });

            lista.AddRange(q.ToList());

            return lista;


            
        }



       [DataObjectMethod(DataObjectMethodType.Select, false)]
       public List<ListValueInfo> GetEmpresasXEmpleado(int idEmpleado)
       {

           List<ListValueInfo> lista = new List<ListValueInfo>();
           ListValueInfo infoall = new ListValueInfo();
           infoall.idInternal = 0;
           infoall.descripcion = "-----TODOS-------";
           lista.Add(infoall);

           var q = (from a in DbUtil.Db.EmpleadoObras
                    where  a.Obra.Proyecto.idEmpresa==idEmpleado
                    select new ListValueInfo
                    {
                        descripcion = a.Obra.Proyecto.Empresa.descripcion,
                        idInternal = a.Obra.Proyecto.Empresa.idInternal
                    }).Distinct();

           lista.AddRange(q.ToList());

           return lista;



       }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetGrupoRecursoPresuList(int idPrespuesto)
        {

                List<ListValueInfo> lista = new List<ListValueInfo>();         
                
            var q= from a in DbUtil.Db.Recursos
                   where a.Partida.idPresupuesto==idPrespuesto
                   & a.bitsel==true
                   & (a.parcial-a.parcialUso)>0
                   group a by a.grupo into g
                   select new ListValueInfo
                   {
                    idInternal = g.Key.Value,
                    descripcion =string.Format("{0} :(Disp: {1} {2:N})", g.First().GrupoDatoitem.descripcion,g.First().Partida.Presupuesto.Moneda.simbol,g.Sum(p=>p.parcial-p.parcialUso))
                   };

                lista = q.ToList();
            
            return lista;


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetTipoDOcumento()
        {

            using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            {


                return (from c in _db.TipoDocumentos
                        select new ListValueInfo
                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


            }
        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoNotaIngreso()
        {

            using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            {


                return (from c in _db.DocumentoTipos
                        where c.idOrigen == 1
                        select new ListValueInfo
                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


            }
        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoNotaSalida()
        {

            using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            {


                return (from c in _db.DocumentoTipos
                        where c.idOrigen==2
                        select new ListValueInfo
                       
                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


            }
        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoVenta()
        {

            

                return (from c in DbUtil.Db.DocumentoTipos
                        where c.idInternal==2 |c.idInternal==4 | c.idInternal==6 
                        select new ListValueInfo

                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


            
        }



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoVentaCont()
        {



            return (from c in DbUtil.Db.DocumentoTipos
                    where c.idInternal == 2 | c.idInternal == 4 | c.idInternal == 6
                    select new ListValueInfo

                    {
                        idInternal = c.idInternal,
                        descripcion = c.descripcion
                    }).ToList();



        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetConceptoVenta()
        {



            return (from c in DbUtil.Db.ConceptoItems
                    where c.idInternal == 1 | c.idInternal == 2 | c.idInternal == 3 | c.idInternal==4
                    select new ListValueInfo

                    {
                        idInternal = c.idInternal,
                        descripcion = c.descripcion
                    }).ToList();



        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetAniosOrdenVenta(int idProyecto)
        {


            var  q= (from c in DbUtil.Db.OrdenVentas
                    where  c.idProyecto==idProyecto
                    select new ListValueInfo

                    {
                        idInternal = c.fecha.Year,
                        descripcion = c.fecha.Year.ToString()
                    }).OrderBy(p=>p.idInternal).Distinct();

            return q.ToList();



        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetAniosOrdenCompra(int idObra)
        {


            var q = (from c in DbUtil.Db.OrdenCompras
                     where c.idObra== idObra
                     select new ListValueInfo

                     {
                         idInternal = c.fechaEmision.Value.Year,
                         descripcion = c.fechaEmision.Value.Year.ToString()
                     }).OrderBy(p => p.idInternal).Distinct();

            return q.ToList();



        }



        //[DataObjectMethod(DataObjectMethodType.Select, false)]
        //public List<ListValueInfo> GetOrdenVentaPendientes(int idProyecto)
        //{
        //    //solo puedes los que no fueron facturados y existan saldos

        //    var q=from c in DbUtil.Db.OrdenVentaItems
        //            where c.OrdenVenta.idProyecto== idProyecto
        //            & (c.total- (c.DocumentoVentaItems.Count==0?0: c.DocumentoVentaItems.Sum(p=>p.total)))>0
        //            select new ListValueInfo
        //            {
        //                idInternal = c.idInternal,
        //                descripcion = String.Format("{0}-{1}:{2}", c.OrdenVenta.numDocumento, c.UI.codigo, c.UI.descripcion),
        //            };

        //    return q.ToList();

        //}


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoRecepcionDoc()
        {

            return (from c in DbUtil.Db.DocumentoTipos
                        where c.idOrigen == 3
                           // & c.idInternal!=17
                            & c.idInternal!=18
                            & c.idInternal!=19
                            select new ListValueInfo
                            {
                                idInternal = c.idInternal,
                                descripcion = c.descripcion
                            }).ToList();

        }

        //[DataObjectMethod(DataObjectMethodType.Select, false)]
        //public List<ListValueInfo> GetDocumentoTipoRecepcionDoc()
        //{

        //    return (from c in DbUtil.Db.DocumentoTipos
        //            where c.idOrigen == 3
        //            select new ListValueInfo

        //            {
        //                idInternal = c.idInternal,
        //                descripcion = c.descripcion
        //            }).ToList();

        //}

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetDocumentoTipoCajaChica()
        {

            using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            {


                return (from c in _db.DocumentoTipos
                        where c.bitCH == true
                        select new ListValueInfo

                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


            }
        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetFormaEntrega()
        {

            

                return (from c in DbUtil.Db.GrupoDatoitems
                        where c.idGrupo == 10
                        select new ListValueInfo

                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetAtributoUI()
        {



            return (from c in DbUtil.Db.GrupoDatoitems
                    where c.idGrupo == 16
                    select new ListValueInfo

                    {
                        idInternal = c.idInternal,
                        descripcion = c.descripcion
                    }).ToList();


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetFechaPagoFacturas()
        {

            

                return (from c in DbUtil.Db.CronogramaPagos
                        where c.fechaInicio>=DateTime.Now.AddDays(-1)
                        select new ListValueInfo

                        {
                            idInternal = c.idInternal,
                            descripcion = c.fechaFin.ToShortDateString()
                        }).ToList();

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetMoneda()
        {

            
                    return (from c in DbUtil.Db.Monedas
                        select new ListValueInfo
                        {
                            idInternal = c.idInternal,
                            descripcion = c.descripcion
                        }).ToList();


        }



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetMotivoNotaIngreso()
        {

            
                return (from c in DbUtil.Db.MotivoItems
                        where c.idMotivo==1 // nota de ingreso
                        select new ListValueInfo
                        {
                            idInternal = c.idinternal,
                            descripcion = c.descripcion
                        }).ToList();


        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetMotivoNotaSalida()
        {


            return (from c in DbUtil.Db.MotivoItems
                    where c.idMotivo == 2 // nota de ingreso
                    select new ListValueInfo
                    {
                        idInternal = c.idinternal,
                        descripcion = c.descripcion
                    }).ToList();


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetMotivoNotaCreditoVenta()
        {


            return (from c in DbUtil.Db.MotivoItems
                    where c.idMotivo == 4 // nota de ingreso
                    select new ListValueInfo
                    {
                        idInternal = c.idinternal,
                        descripcion = c.descripcion
                    }).ToList();


        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetComparativosDispToOrdenCompraList(int idObra)
        {
            //

                return (from c in DbUtil.Db.ComparativoProveedors
                         where c.Comparativo.idObra == idObra &
                         c.Comparativo.idEstado == 3 & c.bitSeleccion == true &
                          (c.totalContratado-c.totalUso)>0
                         select new ListValueInfo
                        {
                            idInternal =c.Comparativo.idInternal,
                            descripcion = String.Format("{0}- {1} (Saldo: {2} {3}) ", 
                            c.Comparativo.numDocumento, 
                            c.Comparativo.descripcion, 
                            c.Moneda.simbol, 
                            (c.totalContratado.Value - c.totalUso.Value).ToString())
                        }).Distinct().ToList();

            
        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetComparativosDispToOrdenGastoList(int idObra)
        {

            return (from c in DbUtil.Db.ComparativoProveedors
                    where c.Comparativo.idObra == idObra 
                    //(c.Comparativo.EstructuraCosto.idPadre==4 |c.Comparativo.EstructuraCosto.idPadre==5 )
                    & c.Comparativo.idEstado == 3 & c.bitSeleccion == true &
                    (c.totalContratado - c.totalUso) > 0
                    select new ListValueInfo
                    {
                        idInternal = c.Comparativo.idInternal,
                        descripcion = String.Format("{0}- {1} (Saldo: {2} {3}) ",
                        c.Comparativo.numDocumento,
                        c.Comparativo.descripcion,
                        c.Moneda.simbol,
                        (c.totalContratado.Value - c.totalUso.Value).ToString())
                    }).Distinct().ToList();


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetAlmacenes(int idObra)
        {


            return (from a in DbUtil.Db.Almacens
                    where a.idObra == idObra
                    select new ListValueInfo
                    {
                      descripcion=a.descripcion,
                      idInternal=a.idInternal
                    }).ToList();

                
        }
        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetAlmacenesXEmpresa(int idEmpresa)
        {


            return (from a in DbUtil.Db.Almacens
                    where a.idEmpresa == idEmpresa
                    
                    select new ListValueInfo
                    {
                        descripcion = a.descripcion,
                        idInternal = a.idInternal
                    }).ToList();


        }




        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetObras(int idEmpresa)
        {
            
            
            var q=(from a in DbUtil.Db.Obras
                    where a.Proyecto.idEmpresa == idEmpresa
                    select new ListValueInfo
                    {
                        descripcion = a.descripcion,
                        idInternal = a.idInternal
                    }).ToList();

            q.Insert(0, new ListValueInfo
            {
                idInternal = 0,
                descripcion = "No seleccionado"
            });

            return q;


        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetObrasXProyecto(int idProyecto)
        {


            var q = (from a in DbUtil.Db.Obras
                     where a.idProyecto == idProyecto
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();

            q.Insert(0, new ListValueInfo
            {
                idInternal = 0,
                descripcion = "---SELECCIONE OBRA----"
            });

            return q;


        }
        
        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoClases()
        {
            
            
            var q=(from a in DbUtil.Db.Insumos
                    where a.nivel==0
                     orderby a.codigo
                    select new ListValueInfo
                    {
                        descripcion = a.codigo+" - "+a.descripcion,
                        idInternal = a.idInternal
                    }).ToList();

            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoFamilia()
        {


            var q = (from a in DbUtil.Db.Insumos
                     where a.nivel == 1 
                     orderby a.codigo
                     select new ListValueInfo
                     {
                         descripcion = a.codigo + " - " + a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


           

            return q;

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetEstadoComparativo()
        {
            List<ListValueInfo> lista = new List<ListValueInfo>();
            ListValueInfo todos = new ListValueInfo();
            todos.descripcion = String.Format("-----Todos-----");
            todos.idInternal = 0;
            lista.Add(todos);


            var q = (from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo == 1
                     orderby a.idInternal
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            lista.AddRange(q);

            return lista;

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetEstadoOrdenCompra()
        {
            List<ListValueInfo> lista = new List<ListValueInfo>();
            ListValueInfo todos = new ListValueInfo();
            todos.descripcion = String.Format("-----Todos-----");
            todos.idInternal = 0;
            lista.Add(todos);


            var q = (from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo == 4
                     orderby a.idInternal
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            lista.AddRange(q);

            return lista;

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetEstadoCliente()
        {
            List<ListValueInfo> lista = new List<ListValueInfo>();
            ListValueInfo todos = new ListValueInfo();
            todos.descripcion = String.Format("-----Todos-----");
            todos.idInternal = 0;
            lista.Add(todos);


            var q = (from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo == 13
                     orderby a.idInternal
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            lista.AddRange(q);

            return lista;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetEstadoCivil()
        {
           

            var q = (from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo == 23
                     orderby a.idInternal
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            return q.ToList();

        }
        //[DataObjectMethod(DataObjectMethodType.Select, false)]
        //public List<ListValueInfo> GetProyectoTipo()
        //{
        //    List<ListValueInfo> lista = new List<ListValueInfo>();
        //    ListValueInfo todos = new ListValueInfo();
        //    todos.descripcion = String.Format("-----Todos-----");
        //    todos.idInternal= 0;
        //    lista.Add(todos);


        //    var q = (from a in DbUtil.Db.GrupoDatoitems
        //             where a.idGrupo == 14
        //             orderby a.idInternal
        //             select new ListValueInfo
        //             {
        //                 descripcion = a.descripcion,
        //                 idInternal = a.idInternal
        //             }).ToList();


        //    lista.AddRange(q);

        //    return lista;

        //}

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetProyectoTipo(int tipoProyecto)
        {
            //List<ListValueInfo> lista = new List<ListValueInfo>();
            //ListValueInfo todos = new ListValueInfo();
            //todos.descripcion = String.Format("-----Todos-----");
            //todos.idInternal = 0;
            //lista.Add(todos);


            var q = (from a in DbUtil.Db.TipoProyectos
                     where a.idGrupo == tipoProyecto
                     orderby a.idInternal
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            //lista.AddRange(q);

            return q.ToList();

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoFamiliaXClase(int idClase)
        {


            var q = (from a in DbUtil.Db.Insumos
                     where a.nivel == 1 & a.idPadre == idClase
                     orderby a.codigo
                     select new ListValueInfo
                     {
                         descripcion = a.codigo + " - " + a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();




            return q;

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoSubFamilia()
        {


            var q = (from a in DbUtil.Db.Insumos
                     where a.nivel == 2 
                     orderby a.codigo
                     select new ListValueInfo
                     {
                         descripcion = a.codigo + " - " + a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();




            return q;


        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoSubFamiliaXFamilia(int idFamilia)
        {


            var q = (from a in DbUtil.Db.Insumos
                     where a.nivel == 2 & a.idPadre == idFamilia
                     orderby a.codigo
                     select new ListValueInfo
                     {
                         descripcion = a.codigo + " - " + a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();




            return q;


        }



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoListNiveles()
        {
            List<ListValueInfo> lista = new List<ListValueInfo>();
            lista.Add(new ListValueInfo(){ idInternal=-3,descripcion="-----Todas  las clases-----"});
            lista.Add(new ListValueInfo(){ idInternal=-2,descripcion="-----Todas  las Familias-----"});
            lista.Add(new ListValueInfo(){ idInternal=-1,descripcion="-----Todas  las SubFamilias-----"});
            lista.Add(new ListValueInfo(){ idInternal= 0,descripcion = "-----Todas  las insumos-----" });


            return lista;


        }



        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetFormularioAcceso()
        {
            var AccesoList = from a in  DbUtil.Db.FormularioAccesos
                             select  new ListValueInfo
                             {
                                 descripcion=a.descripcion,
                                 idInternal=a.idinternal
                             };


            return AccesoList.ToList();
            


        }

       




        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetInsumoUnidadAll()
        {


            var q = (from a in DbUtil.Db.InsumoUnidad
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion+" - " + a.abreviacion,
                         idInternal = a.idInternal
                     }).ToList();

                return q;

        }


            [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetMeses()
        {


            var MonthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
            List<ListValueInfo> lista = new List<ListValueInfo>();
                int cont=0;
            foreach (var item in MonthNames)
            {
                ListValueInfo nuevo=new ListValueInfo();
                cont++;
                nuevo.idInternal = cont;
                nuevo.descripcion = item.ToUpper();
                lista.Add(nuevo);
            }
            return lista;

        }


            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetAniosCierre()
            {


                
                List<ListValueInfo> lista = new List<ListValueInfo>();
                int cont = 0;
                for (int i = 0; i < 7; i++)
			{
			
                    ListValueInfo nuevo = new ListValueInfo();
                    cont++;
                    nuevo.idInternal = Convert.ToInt32(DateTime.Now.Year - cont + 1);
                    nuevo.descripcion = Convert.ToString(DateTime.Now.Year - cont+1);
                    lista.Add(nuevo);
                }
                return lista;

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetEstructura()
            {


                var q = (from a in DbUtil.Db.Estructuras
                         
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();
                    
                ListValueInfo infoall = new ListValueInfo();
                    infoall.idInternal = 0;
                    infoall.descripcion="-----TODOS-------";
                    q.Add(infoall);
                
                return q;

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetEstructuraCompras(int idObra)
            {


                var q = (from a in DbUtil.Db.EstructuraCostos
                         where a.idObra==idObra
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).OrderBy(p=>p.descripcion).ToList();

                
                return q;

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetUnidadTrabajoXObra(int idObra)
            {


                var q = (from a in DbUtil.Db.UnidadTrabajo
                         where a.idObra == idObra
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                return q;

            }



            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetPrespuestoHabit(int idObra)
            {
                var tipoObra = DbUtil.Db.Obras.Single(p => p.idInternal == idObra).TipoObra; ;
                //caso de acabado
                var lista=new List<ListValueInfo>();
                if (tipoObra.bitViewPresupuestoNeedPass.Value)
                {
                    // para el caso de presupuesto de casco segun obra
                    var q = from a in DbUtil.Db.Presupuesto
                            where a.idObra == idObra &
                            (a.idEstado == 26 | a.tipoOrigen == 2 | a.tipoOrigen == 3)
                            select new 
                            {
                               descripcion = a.nombre,
                               moneda=a.Moneda.simbol,
                               disponible = (a.Partidas.Count == 0 ? 0 :
                                          a.Partidas.Sum(p => (p.Recursos.Where(o=>o.nivel==0).Count() > 0) ?
                                          p.Recursos.Where(o=>o.nivel==0).Sum(w => w.parcial.Value ) :
                                          0))-(a.Partidas.Count() == 0 ? 0 : 
                                          a.Partidas.Sum(p => (p.Recursos.Count() > 0) ? 
                                          p.Recursos.Sum(w =>w.parcialUso.Value) : 
                                          0)),
                                idInternal = a.idInternal
                            };

                    var e = (from a in q
                             where a.disponible > 0
                             orderby a.descripcion
                             select new ListValueInfo
                                {
                                    descripcion = String.Format("{0} (Disp:{1} {2:N})",a.descripcion,a.moneda,a.disponible),
                                    idInternal=a.idInternal
                                });


                    lista= e.ToList();
                }

                else if (!tipoObra.bitViewPresupuestoNeedPass.Value)
                {
                    //caso de ser  acabado 
                    // no necesitan aprobacion
                    var q = (from a in DbUtil.Db.Presupuesto
                             where a.idObra == idObra
                              select new ListValueInfo
                             {
                                 descripcion = a.nombre,
                                 idInternal = a.idInternal
                             }).ToList();

                    lista= q;
                }
                return lista;
                

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetFinanciamientoVenta()
            {
                var q = (from a in DbUtil.Db.GrupoDatoitems
                         where a.idGrupo==15 //fianaciamiento Venta
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();
    
                    return q;

            }


            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetEstadoUI()
            {
                var q = (from a in DbUtil.Db.EstadoItems
                         where a.idEstado == 1 //Unidad Inmobiliaria
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                return q;

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetEstadoOrdenVenta()
            {
                var q = (from a in DbUtil.Db.EstadoItems
                         where a.idEstado == 4 //Orden Venta
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                return q;

            }

            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetEstadoDocumentoVenta()
            {
                var q = (from a in DbUtil.Db.EstadoItems
                         where a.idEstado == 5 //documento Venta
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                return q;

            }

         [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetTipoUI()
            {
                var q = (from a in DbUtil.Db.UITipos
                       
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                return q;

            }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public List<ListValueInfo> GetTipoUI(int idProyecto)
         {
             var q = (from a in DbUtil.Db.UIs
                       where a.Etapa.idProyecto==idProyecto
                       select new ListValueInfo
                          {
                              descripcion = a.UITipo.descripcion.ToUpper(),
                              idInternal = a.UITipo.idInternal
                          }).Distinct().ToList();

             return q;

         }


            //[DataObjectMethod(DataObjectMethodType.Select, false)]
            //public List<ListValueInfo> GetLocalizacionUI(int idTipoProyecto)
            //{
            //    //si son edificios /  lotes segun la etapa

            //    var q = (from a in DbUtil.Db.UILocalizacions
            //             where a.idTipoProyecto == idTipoProyecto //Unidad Inmobiliaria
            //             select new ListValueInfo
            //             {
            //                 descripcion = a.descripcion,
            //                 idInternal = a.idInternal
            //             }).ToList();

            //    return q;

            //}



            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetTipoOrdenGasto()
            {
                var q = (from a in DbUtil.Db.TipoOrdens
                         where a.idInternal!=5
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                // retirar las ordenes de compra
                q.RemoveAt(0);
                return q;

            }



            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetCajaChicaPendientes(int idObra)
            {
                var q = (from a in DbUtil.Db.Rendicions
                         where a.idObra==idObra
                         & a.idEstado==41
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();

                
                return q;

            }
            [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetCajaChica(int idObra)
            {
                var q = (from a in DbUtil.Db.Cajas
                         where a.idObra == idObra
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).ToList();


                return q;

            }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
            public List<ListValueInfo> GetLocalizacionUI(int idEtapa)
            {
                
                var q = (from a in DbUtil.Db.UILocalizacions
                         where a.idEtapa == idEtapa
                         select new ListValueInfo
                         {
                             descripcion = a.descripcion,
                             idInternal = a.idInternal
                         }).OrderBy(t=>t.descripcion).ToList();

                
                return q;

            }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetModeloUI(int idProyecto)
        {

            var q = (from a in DbUtil.Db.UIModeloTipos
                     where a.idProyecto == idProyecto
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetBloquePiso(int idLocalizacion)
        {

            var q = (from a in DbUtil.Db.UIBloques
                     where a.idLocalizacion == idLocalizacion
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();


            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public List<ListValueInfo> GetProgramaUI()
        {
            var q = (from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo == 17 //Unidad Inmobiliaria
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     }).ToList();

            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetBancoActivoXProyecto(int idProyecto)
        {

            ////join left
            //var q = from a in DbUtil.Db.Bancos
            //        join b in DbUtil.Db.CuentaFinanciamientos on a.idinternal equals b.idBanco into viewKardexfin
            //        from d in viewKardexfin.DefaultIfEmpty()
            //        select new ListValueInfo
            //        {
            //            descripcion = string.Format("{0} {1}",a.descripcion,(d.idProyecto==null)?"":"<b>ACTIVO FIN.</b>"),
            //            idInternal = a.idinternal
            //        };


            //join left
            var q = from a in DbUtil.Db.CuentaFinanciamientos
                    where a.idProyecto==idProyecto
                    select new ListValueInfo
                    {
                        descripcion =  a.Banco.descripcion.ToUpper(),
                        idInternal = a.idBanco
                    };



            return q;

        }
       
        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetCuentaBanco(int idEmpresa)
        {
            var q = (from a in DbUtil.Db.CuentaBancos
                     where a.idEmpresa== idEmpresa
                     select new ListValueInfo
                     {
                         descripcion = String.Format("{0}-{1}-{2}",a.Moneda.descripcion,a.descripcion,a.Banco.descripcion),
                         idInternal = a.idInternal
                     });

            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetCuentaRecaudadora(int idProyecto,int idMoneda)
        {
            var q = (from a in DbUtil.Db.CuentaProyectos
                     where a.idProyecto ==idProyecto
                     & a.CuentaBanco.idMoneda == idMoneda
                     select new ListValueInfo
                     {
                         descripcion = String.Format("{0}:{1}-{2}", a.CuentaBanco.Banco.descripcion, a.CuentaBanco.Moneda.descripcion, a.CuentaBanco.descripcion),
                         idInternal = a.idCuentaBanco
                     });

            return q;

        }
        //public IQueryable<ListValueInfo> ApplySelect_CuentaRecaudadora()
        //{
        //    var q = (from a in DbUtil.Db.CuentaProyectos
        //             select new ListValueInfo
        //             {
        //                 descripcion = String.Format("{0}:{1}-{2}", a.CuentaBanco.Banco.descripcion, a.CuentaBanco.Moneda.descripcion, a.CuentaBanco.descripcion),
        //                 idInternal = a.idCuentaBanco,
        //                 idValor=a.idProyecto
        //             });
        //    return q;
        //}

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetCuentaRecaudadora(int idProyecto)
        {



            var q = (from a in DbUtil.Db.CuentaProyectos
                     where a.idProyecto==idProyecto
                     select new ListValueInfo
                     {
                         descripcion = String.Format("{0}       :{1}    -   {2}", a.CuentaBanco.Banco.descripcion, a.CuentaBanco.Moneda.descripcion, a.CuentaBanco.descripcion),
                         idInternal = a.idCuentaBanco,
                         
                     });
            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetBanco()
        {
            var q = (from a in DbUtil.Db.Bancos
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idinternal
                     });

            return q;

        }

        //[DataObjectMethod(DataObjectMethodType.Select, false)]
        //public IEnumerable<ListValueInfo> GetEtapaVentaXEmpresa()
        //{
            
        //    var q = (from a in DbUtil.Db.Etapas
        //             where a.Proyecto.idEmpresa == idEmpresa
        //             select new ListValueInfo
        //             {
        //                 descripcion = string.Format("{0} -  {1}",a.descripcion,a.Proyecto.descripcion),
        //                 idInternal = a.idInternal
        //             });

        //    return q;

        //}


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetEtapaVentaXProyecto(int idProyecto)
        {
            
            var q = (from a in DbUtil.Db.Etapas
                     where a.idProyecto == idProyecto
                     & a.bitActivo==true
                     orderby a.descripcion
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     });

            return q;

        }


       

           [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetInsumoUnidad()
        {
           

                


            var q = (from a in DbUtil.Db.InsumoUnidad
                     select new ListValueInfo
                     {
                         descripcion = string.Format("{0}({1})",a.descripcion,a.abreviacion),
                         idInternal = a.idInternal
                     });

            return q;

        }

     

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetProyectoVentaXEmpresa()
        {
           
            var q = (from a in DbUtil.Db.Proyectos
                     where 
                     a.idProyectoTipo==50
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     });

            return q;

        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetProyectoComprasXEmpresa(int idEmpresa)
        {
            
            var q = (from a in DbUtil.Db.Proyectos
                     where a.idEmpresa == idEmpresa
                     & a.idProyectoTipo == 48
                     orderby a.descripcion
                     select new ListValueInfo
                     {
                         descripcion =string.Format ("{0}-{1}",a.codigo, a.descripcion),
                         idInternal = a.idInternal
                     });

            return q;

        }
 


     [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetOrdenVentaItem(int idOrdenVenta)
        {
            
             var q= from a in DbUtil.Db.OrdenVentaItems
                    where a.idOrdenVenta == idOrdenVenta
                select  new  ListValueInfo{
                    idInternal=a.idInternal,
                    descripcion=string.Format("{0}: {1}-",a.UI.descripcion,a.UI.UITipo.descripcion,a.UI.UILocalizacion.descripcion)
                };
            return q;

        }

                


                     [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetTipoAnexoProveedor()
        {
            List<ListValueInfo> lista = new List<ListValueInfo>();
            ListValueInfo nueva = new ListValueInfo();
            nueva.idInternal = 1;
            nueva.descripcion = "P - PROVEEDOR";
            lista.Add(nueva);

            //ListValueInfo nueva = new ListValueInfo();
            //nueva.idInternal = 2;
            //nueva.descripcion = "P - PROVEEDOR";
            //lista.Add(nueva);


            return lista;

        }

     [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetOrdenVentaItemXCliente(int idCliente)
        {
            
               var q= from a in DbUtil.Db.OrdenVentaItems
                   where a.OrdenVenta.idCliente==idCliente
                   select  new ListValueInfo
                   {
                       descripcion=string.Format("{0} {1}",a.UI.Etapa.descripcion,a.UI.descripcion),
                       idInternal=a.idInternal
                   };
            return q;

        }

        


     [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetFormaPago()
        {
            
               var q= from a in DbUtil.Db.FormaPago
                   select  new ListValueInfo
                   {
                       descripcion=a.descripcion,
                       idInternal=a.idInternal
                   };
            return q;

        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetClasificacionProveedor()
        {
            
            var _db=new dbGespagDataContext(Parametros.dbGesPag);
               var q= from a in _db.GEN0002TGE1s
                      where a.TG1_CCODTGE=="V08"
                   select  new ListValueInfo
                   {
                       descripcion=a.TG1_CENLACE +'-'+ a.TG1_CDESCRI,
                       idInternalStr=a.TG1_CENLACE.Trim()
                   };
            return q;

        }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetTipoDocInterbank()
        {
            
            var _db=new dbGespagDataContext(Parametros.dbGesPag);
               var q= from a in _db.GEN0002TGE1s
                      where a.TG1_CCODTGE=="S26"
                   select  new ListValueInfo
                   {
                       descripcion=a.TG1_CENLACE +'-'+ a.TG1_CDESCRI,
                       idInternalStr=a.TG1_CENLACE.Trim()
                   };
            return q;

        }
          
             [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ListValueInfo> GetTipoDocContinental()
        {
            
            var _db=new dbGespagDataContext(Parametros.dbGesPag);
               var q= from a in _db.GEN0002TGE1s
                      where a.TG1_CCODTGE=="S16"
                   select  new ListValueInfo
                   {
                       descripcion=a.TG1_CENLACE +'-'+ a.TG1_CDESCRI,
                       idInternalStr=a.TG1_CENLACE.Trim()
                   };
            return q;

        }



             [DataObjectMethod(DataObjectMethodType.Select, false)]
             public IEnumerable<ListValueInfo> GetTipoCuentaContinental()
             {

                 var _db = new dbGespagDataContext(Parametros.dbGesPag);
                 var q = from a in _db.GEN0002TGE1s
                         where a.TG1_CCODTGE == "S11"
                         select new ListValueInfo
                         {
                             descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                             idInternalStr = a.TG1_CENLACE.Trim()
                         };
                 return q;
                
             }

             [DataObjectMethod(DataObjectMethodType.Select, false)]
             public IEnumerable<ListValueInfo> GetFormaPagoContinental()
             {

                 var _db = new dbGespagDataContext(Parametros.dbGesPag);
                 var q = from a in _db.GEN0002TGE1s
                         where a.TG1_CCODTGE == "S10"
                         select new ListValueInfo
                         {
                             descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                             idInternalStr = a.TG1_CENLACE.Trim()
                         };
                 return q;

             }
      
             [DataObjectMethod(DataObjectMethodType.Select, false)]
             public List<ListValueInfo> GetRetencion()
             {
                  ListValueInfo ninguno= new ListValueInfo();
                   ninguno.descripcion="<NINGUNO>";
                   var result = new List<ListValueInfo>();
                   result.Add(ninguno);
                 var _db = new dbGespagDataContext(Parametros.dbGesPag);
                 var q = from a in _db.PAG0002TAS1s
                         where a.TA1_CCODTIP == "RET"
                         select new ListValueInfo
                         {
                             descripcion = a.TA1_CCODIGO + '-' + a.TA1_CDESCRI,
                             idInternalStr = a.TA1_CCODIGO.Trim()
                         };
                 result.AddRange(q.ToList());
                 return result;

             }

         [DataObjectMethod(DataObjectMethodType.Select, false)]
             public List<ListValueInfo> GetDetraccion()
             {
                  ListValueInfo ninguno= new ListValueInfo();
                   ninguno.descripcion="<NINGUNO>";
                   var result = new List<ListValueInfo>();
                   result.Add(ninguno);
                 var _db = new dbGespagDataContext(Parametros.dbGesPag);
                 var q = from a in _db.PAG0002TAS1s
                         where a.TA1_CCODTIP == "DET"
                         select new ListValueInfo
                         {
                             descripcion = a.TA1_CCODIGO + '-' + a.TA1_CDESCRI,
                             idInternalStr = a.TA1_CCODIGO.Trim()
                         };
                 result.AddRange(q.ToList());
                 return result;

             }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public List<ListValueInfo> GetTipoInterBank()
         {
             ListValueInfo ninguno = new ListValueInfo();
             ninguno.descripcion = "<NINGUNO>";
             var result = new List<ListValueInfo>();
             result.Add(ninguno);
             var _db = new dbGespagDataContext(Parametros.dbGesPag);
             var q = from a in _db.GEN0002TGE1s
                     where a.TG1_CCODTGE == "S07"
                     select new ListValueInfo
                     {
                         descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                         idInternalStr = a.TG1_CENLACE.Trim()
                     };
             result.AddRange(q.ToList());
             return result;
           
         }

         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public List<ListValueInfo> GetTipoBonoBank()
         {
             ListValueInfo ninguno = new ListValueInfo();
             ninguno.descripcion = "<NINGUNO>";
             var result = new List<ListValueInfo>();
             result.Add(ninguno);
             var _db = new dbGespagDataContext(Parametros.dbGesPag);
             var q = from a in _db.GEN0002TGE1s
                     where a.TG1_CCODTGE == "S07"
                     select new ListValueInfo
                     {
                         descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                         idInternalStr = a.TG1_CENLACE.Trim()
                     };
             result.AddRange(q.ToList());
             return result;

         }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public List<ListValueInfo> GetTipoProductoInterBank()
         {
             ListValueInfo ninguno = new ListValueInfo();
             ninguno.descripcion = "<NINGUNO>";
             var result = new List<ListValueInfo>();
             result.Add(ninguno);
             
             var _db = new dbGespagDataContext(Parametros.dbGesPag);
             var q = from a in _db.GEN0002TGE1s
                     where a.TG1_CCODTGE == "S06"
                     select new ListValueInfo
                     {
                         descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                         idInternalStr = a.TG1_CENLACE.Trim()
                     };
             result.AddRange(q.ToList());
             return result;

           


         }

           [DataObjectMethod(DataObjectMethodType.Select, false)]
         public List<ListValueInfo> GetTipoDocTelecredito()
         {
             ListValueInfo ninguno = new ListValueInfo();
             ninguno.descripcion = "<NINGUNO>";
             var result = new List<ListValueInfo>();
             result.Add(ninguno);
             
             var _db = new dbGespagDataContext(Parametros.dbGesPag);
             var q = from a in _db.GEN0002TGE1s
                     where a.TG1_CCODTGE == "S05"
                     select new ListValueInfo
                     {
                         descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                         idInternalStr = a.TG1_CENLACE.Trim()
                     };
             result.AddRange(q.ToList());
             return result;

           


         }

           [DataObjectMethod(DataObjectMethodType.Select, false)]
           public IEnumerable<ListValueInfo> GetTipoProductoTelecredito()
           {
               

               var _db = new dbGespagDataContext(Parametros.dbGesPag);
               var q = from a in _db.GEN0002TGE1s
                       where a.TG1_CCODTGE == "S04"
                       select new ListValueInfo
                       {
                           descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                           idInternalStr = a.TG1_CENLACE.Trim()
                       };
              
               return q;




           }



           [DataObjectMethod(DataObjectMethodType.Select, false)]
           public IEnumerable<ListValueInfo> GetFormaPagoGesPag()
           {
             

               var _db = new dbGespagDataContext(Parametros.dbGesPag);
               var q = from a in _db.GEN0002TGE1s
                       where a.TG1_CCODTGE == "S01"
                       select new ListValueInfo
                       {
                           descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                           idInternalStr = a.TG1_CENLACE.Trim()
                       };
             
               return q;

                 


           }



           [DataObjectMethod(DataObjectMethodType.Select, false)]
           public IEnumerable<ListValueInfo> GetGiroNegocio()
           {


               var _db = new dbGespagDataContext(Parametros.dbGesPag);
               var q = from a in _db.GEN0002TGE1s
                       where a.TG1_CCODTGE == "77"
                       select new ListValueInfo
                       {
                           descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                           idInternalStr = a.TG1_CENLACE.Trim()
                       };

               return q;

             


           }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
           public IEnumerable<ListValueInfo> GetTipoAcreedor()
           {


               var _db = new dbGespagDataContext(Parametros.dbGesPag);
               var q = from a in _db.GEN0002TGE1s
                       where a.TG1_CCODTGE == "76"
                       select new ListValueInfo
                       {
                           descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                           idInternalStr = a.TG1_CENLACE.Trim()
                       };

               return q;

             


           }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public IEnumerable<ListValueInfo> GetAreContactoPago()
         {


             var _db = new dbGespagDataContext(Parametros.dbGesPag);
             var q = from a in _db.GEN0002TGE1s
                     where a.TG1_CCODTGE == "P29"
                     select new ListValueInfo
                     {
                         descripcion = a.TG1_CENLACE + '-' + a.TG1_CDESCRI,
                         idInternalStr = a.TG1_CENLACE.Trim()
                     };

             return q;




         }


         [DataObjectMethod(DataObjectMethodType.Select, false)]
         public IEnumerable<ListValueInfo> GetComoEnterasteVenta()
         {


             
             var q = from a in DbUtil.Db.GrupoDatoitems
                     where a.idGrupo==22
                     select new ListValueInfo
                     {
                         descripcion = a.descripcion,
                         idInternal = a.idInternal
                     };

             return q;




         }


     //[DataObjectMethod(DataObjectMethodType.Select, false)]
     //public IEnumerable<ListValueInfo> GetFormaPago()
     //{

     //    var q = from a in DbUtil.Db.FormaPago
     //            select new ListValueInfo
     //            {
     //                descripcion = a.descripcion,
     //                idInternal = a.idInternal
     //            };
     //    return q;

     //}



     [DataObjectMethod(DataObjectMethodType.Select, false)]
     public IEnumerable<ListValueInfo> GetProveedorSinCompartivo(int idObra,int idEstructuraCosto)
     {

         var q = from a in DbUtil.Db.EstructuraCostoItems
                 where a.idOrdenCompraItemRef != null
                 & a.OrdenCompraItem.OrdenCompra.idObra==idObra
                 & a.idEstructuraCosto == idEstructuraCosto
                 select new ListValueInfo
                 {
                     idInternal = a.OrdenCompraItem.OrdenCompra.Proveedor1.idInternal,
                     descripcion = a.OrdenCompraItem.OrdenCompra.Proveedor1.descripcion

                 };


         return q;

     }
     [DataObjectMethod(DataObjectMethodType.Select, false)]
     public List<ListValueInfo> GetTipoGasto()
     {
         List<ListValueInfo> lista= new List<ListValueInfo>();
         ListValueInfo infoall = new ListValueInfo();
         infoall.idInternal = 0;
         infoall.descripcion = "-----TODOS-------";
         lista.Add(infoall);

         var q = (from a in DbUtil.Db.TipoOrdens
                  where a.idInternal>1
                  select new ListValueInfo
                  {
                      descripcion = a.descripcion,
                      idInternal = a.idInternal
                  });

         lista.AddRange(q.ToList());

         return lista;

     }


     [DataObjectMethod(DataObjectMethodType.Select, false)]
     public List<ListValueInfo> GetDocumentoventaRef(int idOrdenVentaItem)
     {
         List<ListValueInfo> lista = new List<ListValueInfo>();
         ListValueInfo infoall = new ListValueInfo();
         infoall.idInternal = 0;
         infoall.descripcion = "-----TODOS-------";
         lista.Add(infoall);

         var q = (from a in DbUtil.Db.DocumentoVentas
                  where a.idOrdenVentaItem == idOrdenVentaItem
                  select new ListValueInfo
                  {
                      descripcion = string.Format("{0}/{1} (Total: {2} {3:N}",a.DocumentoTipo.abreviacion,a.numeroDoc,a.Moneda.simbol, a.total),
                      idInternal = a.idInternal
                  });

         lista.AddRange(q.ToList());

         return lista;

     }


        }
 

    public class ListValueInfo
    {
        public int idInternal { get; set; }
        public int idValor { get; set; }
        
        public String descripcion { get; set; }

        public String idInternalStr { get; set; }


    }
}
